/**
 ******************************************************************************
 * @file           : bsp_iwdg.h
 * @brief          : IWDG Driver Header File (STM32F4xx)
 ******************************************************************************
 * @attention
 *
 * 独立看门狗驱动头文件
 * 防止程序跑飞
 *
 ******************************************************************************
 */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __BSP_IWDG_H
#define __BSP_IWDG_H

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include <stdint.h>
#include "./BSP/IWDG/bsp_iwdg_config.h"

/* Exported types ------------------------------------------------------------*/

/**
 * @brief IWDG错误码枚举
 */
typedef enum
{
    IWDG_OK = 0,                    /*!< 成功 */
    IWDG_ERROR_PARAM,               /*!< 参数错误 */
    IWDG_ERROR_TIMEOUT              /*!< 超时 */
} IWDG_Error_e;

/* Exported constants --------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
/* Exported variables --------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/

void iwdg_init(uint16_t timeout_ms);
void iwdg_feed(void);

/* 状态查询函数 */
IWDG_Error_e iwdg_get_last_error(void);

/* 调试接口 */
void iwdg_print_status(void);

#ifdef __cplusplus
}
#endif

#endif /* __BSP_IWDG_H */
